//package guo.mytesttreeview;
//
//import com.chen.treeview.model.Node;
//
//import java.lang.reflect.Field;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * Created by ${GuoZhaoHui} on 2017/11/12.
// * Email:guozhaohui628@gmail.com
// */
//
//public class Utils {
//
//    private static <T> List<Node> convetData2Node(List<T> datas)
//            throws IllegalArgumentException, IllegalAccessException
//
//    {
//        List<Node> nodes = new ArrayList<Node>();
//        Node node = null;
//
//        for (T t : datas)
//        {
//            int id = -1;
//            int pId = -1;
//            String label = null;
//            Class<? extends Object> clazz = t.getClass();
//            Field[] declaredFields = clazz.getDeclaredFields();
//            for (Field f : declaredFields)
//            {
//                if (f.getAnnotation(TreeNodeId.class) != null)
//                {
//                    f.setAccessible(true);
//                    id = f.getInt(t);
//                }
//                if (f.getAnnotation(TreeNodePid.class) != null)
//                {
//                    f.setAccessible(true);
//                    pId = f.getInt(t);
//                }
//                if (f.getAnnotation(TreeNodeLabel.class) != null)
//                {
//                    f.setAccessible(true);
//                    label = (String) f.get(t);
//                }
//                if (id != -1 && pId != -1 && label != null)
//                {
//                    break;
//                }
//            }
//            node = new Node(id, pId, label);
//            nodes.add(node);
//        }
//
//        /**
//         * 设置Node间，父子关系;让每两个节点都比较一次，即可设置其中的关系
//         */
//        for (int i = 0; i < nodes.size(); i++)
//        {
//            Node n = nodes.get(i);
//            for (int j = i + 1; j < nodes.size(); j++)
//            {
//                Node m = nodes.get(j);
//                if (m.getpId() == n.getId())
//                {
//                    n.getChildren().add(m);
//                    m.setParent(n);
//                } else if (m.getId() == n.getpId())
//                {
//                    m.getChildren().add(n);
//                    n.setParent(m);
//                }
//            }
//        }
//
//
//        return nodes;
//    }
//
//    private static List<Node> getRootNodes(List<Node> nodes)
//    {
//        List<Node> root = new ArrayList<Node>();
//        for (Node node : nodes)
//        {
//            if (node.isRoot())
//                root.add(node);
//        }
//        return root;
//    }
//
//
//
//
//}